package com.github.willisaway.core.threadpool;

import java.util.Date;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;

/**
 * 系统中线程的父类，提供监控功能
 * @author liyougen
 *
 */
@Data
@Slf4j
public abstract class ThreadExtend extends Thread {
    public String poolCode="default";//当前线程执行的线程池代码,如果创建线程时没有指定代码，将放入默认线程池中执行
    public String poolName="default";//线程池名称
    public String desc;//线程描述
    public Date startTime;//线程开始执行时间
    public int nThreads=5;//同时执行的线程数,默认五个,不同业务可设置不同的数量
    @Override
    public void run() {
        beforeRun();
        runCore();
        afterRun();
    }

    public abstract void runCore();
    
    public void beforeRun(){
        startTime = new Date(System.currentTimeMillis());
//        logger.info(desc+",开始时间" + DateUtil.date2Second(startTime));
    }
    public void afterRun(){
        Date endTime = new Date(System.currentTimeMillis());
//        logger.info(desc+",结束时间" + DateUtil.date2Second(endTime));
//        logger.info(desc+"耗时:"+NumberUtil.decimalFormat2((((double)endTime.getTime()-startTime.getTime()))/1000)+"秒");
//        ThreadPoolManager.printPoolInfo(poolCode);
    }
}
